home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.11 / kickpascal-programme / prim / primarray.p < prev    next >
Text File  |  1995-04-21  |  2KB  |  66 lines

  1. {*************************************************************
  2.  Nachdem auf Purity 8 schon ein Primzahlenprogramm war, hier
  3.  ein anderes. Die Grundlage besteht aus einem Array. Ich wußte
  4.  auch mal eine rekursive Version, aber erstens ist diese schnell
  5.  und zweitens habe ich die rekursive vergessen. Rekursion war
  6.  sowieso schon immer ein Problem von mir. Rekursiv Bäume ausgeben !
  7.  Bäääh !!
  8.  
  9.  Den Primzahlenbereich kann man durch die Konstante nmax ändern.
  10.  Man muß nur aufpassen, daß der Speicher groß genug ist !
  11.  Das kann man z.B. vorher mit freestack abfragen.
  12.  
  13.  Viel Spaß          Rogersoft
  14.  
  15.                     Michael Klein,
  16.                     Am Wasserturm 6
  17.                     6720 Speyer
  18.  ****************************************************************}
  19.  
  20.  
  21. PROGRAM primzahlen_mit_array;
  22.  
  23. CONST nmax=1500;
  24.  
  25. VAR prim:ARRAY[1..nmax] OF BOOLEAN;STATIC;
  26.     i,j:LONG;
  27.  
  28. PROCEDURE init; { Array löschen }
  29. BEGIN
  30.  FOR i:=2 TO nmax DO prim[i]:=TRUE;
  31.  prim[1]:=FALSE;
  32. END;
  33.  
  34. PROCEDURE berechnung;  {Array belegen}
  35. BEGIN
  36.  FOR i:=1 TO nmax DO
  37.  BEGIN
  38.   IF prim[i]=TRUE THEN
  39.    FOR j:=2 TO nmax DIV i DO prim[i*j]:=FALSE;
  40.  END;
  41. END;
  42.  
  43. PROCEDURE ausgabe;
  44. BEGIN
  45.  FOR i:=2 TO nmax DO
  46.   IF prim[i]=TRUE THEN BEGIN
  47.                          Write(i:6,',');
  48.                        END;
  49.  writeln('   <Return>');
  50.  readln;
  51. END;
  52.  
  53. BEGIN {Hauptprogramm}
  54.  IF fromWB THEN BEGIN
  55.   Reset(input,"CON:0/0/650/256/Primzahlen mit Array | Coded on 07.03.93 by Michel (Rogersoft) for PURITY ");
  56.   output:=input;
  57.  END;
  58.  init;
  59.  berechnung;
  60.  ausgabe;
  61.  IF fromWB THEN Close(input);
  62. END.
  63.  
  64.  
  65.  
  66.